iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
Google Developers Machine Learning

AI可以分析股票嗎?系列 第 25

超級簡略的單股買賣模擬器 :: 測試action預測結果

  • 分享至 

  • xImage
  •  

零、引言

在之前我在「超級簡略的單股買賣模擬器 」中實現了一個非常簡單的股票買賣模擬器,今天我們要重起爐灶,讓這東西來評斷我們的預測結果好不好XD

有時真是佩服自己的機智 哼哼哼 :)

當時實現的內容就是我將一筆一筆的action和「當下的price」輸入進去,這個env每次的action都會更新它的「資產(assets)」,那麼我們今天就來把預測結果和真實的price依照順序丟進去,不就可以了嗎?

再次佩服我的機智 (其實從一開始就計畫了XD

一、當沖簡單測試

當沖就是只做當天買賣的意思,我們對我們的環境初始設一個「現有的資產」讓他自己投資看看

我真的等不及想看看結果了

好的,首先測試一天

  • 程式碼(不會放到github)
from tools import stockEvn_single as single_env

env = single_env()

test_sc = MinMaxScaler()
test_sc.updatePatameter(sc_parameter)


def predict_once(index):
    info = env.getInfo()
    result = [info['assets']]
    stock_value = [info['stock value']]
    test_x, test_y, sc_parameter = create_dataset(path=paths[index], input_days=input_days, output_days=output_days)
    test_x[np.isnan(test_x)] = 0
    model_pred = model.predict(test_x)
    pred = np.argmax(model_pred, axis=-1)
    test_real = test_x[:, -1, 0]
    test_real = test_sc.getInverseData(test_real)
    output_action = pred
    for i, action in enumerate(output_action):
        env.doAction(test_real[i], action, model_pred[i, action])
        info = env.getInfo()
        result.append(info['assets'])
        stock_value.append(info['stock value'])
    env.doAction(test_real[-1], 0, 1)
    return result, stock_value
    
assets, stock_value = predict_once(1700)

# Visualising the results
plt.plot(assets, color = 'blue', label = 'assets')
# plt.plot(stock_value, color = 'red', label = 'stock value')
# plt.plot(output_prices, color = 'blue', label = 'Predicted Google Stock Price')
plt.title('Prediction')
plt.xlabel('Time(moment)')
plt.ylabel('Real')
plt.legend()
plt.show()
- LOSS pred=1500
結果

-> 實測結果

  • 參數

    • 初始金額 = 1000
    • dataset path=1700 (未在訓練資料中)
  • 結果

喔挖屋,太猛了吧? 是賺的耶 (其實我怕我是不是天數之類的又shift錯了,目前是看不出來Orz

但這個結果只能代表這一天,所以我們把所有的天數加進來看看XD

二、N天當沖累積金額

因為我總共的dataset1901筆,而用於訓練和驗證則用掉1500筆,所以最後測試我用從第15011900筆。來看看結果吧 !

  • 這200天的結果

等...等等...真的假的?

其實我真的很不確定我到底天數的shift有沒有問題XD,不過儘管這是真的,但其中並未考慮「手續費」問題和「買賣量」問題,是單純從「價格」面著手而已,所以不要太興奮Orz

三、比較兩個不同訓練方法的結果

- 方法一 方法二
結果

等...「方法二」那什麼東西

其實一開始看我也看不是很懂,想說是不是哪裡資料又用錯了...然後仔細一看y軸單位...怎麼是1e8 ?所以...我看了什麼? 1000滾到2億? 這不可能啊? 方法一是五倍,方法二是十的五次方倍? 花惹發?

想太多

我目前的env只是一個簡單的實現,但其並未考慮到掛牌量的問題和手續費問題,接下來可以對env擴充功能後再來看一下實際效果XD

希望不會反轉成虧的Orz

程式碼

env_01_model_02_LSTM_base_action_predict
env_01_model_04_LSTM_base_action_predict


上一篇
暴力股票action預測-什麼叫做暴力美學 ?
下一篇
比較不簡略的單股買賣模擬器 :: 面對現實吧 !
系列文
AI可以分析股票嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言